package org.example.reflection;

import org.example.io.pojo.User;

import java.lang.reflect.Constructor;

public class Constructors {
    public static void main(String[] args) throws Exception{
        //加载class对象
        Class<?> name = Class.forName("org.example.io.pojo.User");
        //获取所有的构造方法
        Constructor<?>[] constructors = name.getConstructors();
        for (Constructor<?> constructor : constructors) {
            System.out.println(constructor);
        }
        //获取所有构造方法，包括私有
        Constructor<?>[] declaredConstructors = name.getDeclaredConstructors();
        //执行方法
        //访问公有构造方法
        Constructor<?> constructor = name.getConstructor(null);
        constructor.newInstance();
        //访问私有构造方法
        Constructor<?> declaredConstructor = name.getDeclaredConstructor(String.class,String.class,Integer.class);
        //暴力访问
        declaredConstructor.setAccessible(true);
        //执行方法
        User newInstance = (User)declaredConstructor.newInstance("saaaa", "qsqsqsqs", 18);
        newInstance.toString();
    }
}
